Property Observer

관찰자 패턴은 C# 등 다른 언어들은 언어 차원 또는 표준 라이브러리 차원에서 관찰자 패턴을 지원한다.
C++은 직접적인 관찰자 패턴은 지원하지 않으며, 이를 구현할 때, 매우 정교한 구현을 요구한다.
속성 관찰자
struct Person{
int age;
Person(int age): age(age) {}
};
위의 Person 클래스에서 age 변수가 변화하는 것을 Capture한다고 하자.
폴링(polling)을 할 수 있다. 일정한 주기마다 현재 나이를 읽고 이전의 나이와 비교한다.
이는 단순하고 효과적이지만, 비효율적인 작업을 요한다.

Person의 age에 쓰기 작업을 수행할 때, 정보를 받는 것이 가장 효율적이다.
struct Person{
int get_age() const { return age; }
void set_age(const int value){ age=value; }
private:
int age;
}
위와 같이 age 변수 값을 변경하는 set_age() 메서드가 호출되어 값이 바뀔 때 마다 알림을 보낼 수 있도록
구현한다.